// require.context("路径"，“是否递归引入”，“正则”)一次导入多个模块


let files = require.context("@/pages", true, /\.vue$/)

// console.log(paths.keys())
// 创建路由配置
// {path:"",component:""}

let repeatRoutes = files.keys().map(path => {
    // 通过正则去掉index.vue或者去掉.vue的后缀
    let regExp = /(\/index\.vue|\.vue)$/

    // 获取路径对应的每个.vue组件
    let currentComponent = files(path).default;
    let { meta, name, redireat } = currentComponent
    path = path.substring(1).replace(regExp, "")
    // console.log(path)
    return {
        path: path ? path : '/pages',
        // 重定向 name属性  meta路由元信息
        meta: meta ?? {},
        name: name ?? path.substring(1).split("/").join("-").toLowerCase(),
        redireat: redireat ?? null,
        component: () => import("@/pages" + path)

    }
})
console.log(repeatRoutes)

function convertTree(repeatRoutes) {
    repeatRoutes = [...repeatRoutes] //浅拷贝
    let treeRoutes = [];
    // 先给数据添加id和pid
    repeatRoutes.forEach(route => {
        // 将路径去掉第一个/转换成数组
        let routerPathArr = route.path.substring(1).split("/")
        // console.log(routerPathArr)
        // length为1的都是根节点
        //需要添加id和pid
        // 正常添加id
        route.id = routerPathArr.join("-")
        if (routerPathArr.length > 1) {
            // 浅拷贝routerPathArr
            let pathArr = [...routerPathArr]
            pathArr.pop()
            let pid = pathArr.join("-")
            route.pid = pid//添加父节点
        }
    })



    // 转换成树形数据
    repeatRoutes.forEach(route => {
        // 将所有的路径都变成小写 目的是为了和菜单的高亮效果绑定
        route.path = route.path.toLowerCase()
        // 单独对page404进行额外处理

        if(route.path==="/page404"){
            route.path="*"
        }
        // 找粑粑
        let parent = repeatRoutes.find(v => route.pid === v.id)
        if (parent) {
            if (!parent.children) {
                parent.children = []
            }
            // console.log(route.path)
            route.path = route.path.substring(1).split("/").pop()
            parent.children.push(route)
        } else {
            treeRoutes.push(route)
        }
    })
    return treeRoutes

}
let res = convertTree(repeatRoutes)
console.log(res)

export default [...res]